package essential.ch3;

/**
 * @Date 2021/10/23
 * @Created by Jonathan
 * · 当使用运算符“+”来连接字符串时，实际上是使用临时创建的StringBuilder对象来辅助完成的。不同的编译器在处理上也略有不同。
 * · 对于编译时常量，在编译后直接计算出字符串的值，而不会在运行时创建临时的StringBuilder对象来完成字符串连接。
 * · 如果是在循环中对String对象进行连接，应该直接使用StringBuilder代替String的“+”连接，这样可以提高性能。
 */
public class StringPerformance {
    public static void main(String[] args) {
        String s = "";
        long start;
        long end;
        long time;
        start = System.nanoTime();
        for (int i = 0; i < 10000; i++) {
            s += "a";
        }
        end = System.nanoTime();
        time = end - start;
        System.out.printf("连接字符串的时间:%d", time);

        //StringBuilder
        StringBuilder builder = new StringBuilder(10000);
        start = System.nanoTime();
        for (int i = 0; i < 10000; i++) {
            builder.append("a");
        }
        end = System.nanoTime();
        time = end - start;
        System.out.printf("\nStringBuilder的时间:%d", time);
    }
}
